package com.atguigu01.string.exer2;

import org.junit.Test;

/**
 * ClassName: StringTest
 * Package: com.atguigu01.string.exer2
 * Description:
 *
 * @Author ZY
 * @Create 17:14
 * @Version 1.0
 */
public class StringTest {

    /**
     * 题目2:将一个字符串进行反转。将字符串中指定部分进行反转。比如"HelloWorld"反转为"HellodlroW"
     */
    @Test
    public void test1() {
        String s1 = "HelloWorld";
        String s2 = reverse(s1, 5, 9);
        String s3 = reverse2(s1, 5, 9);
        System.out.println(s2);
        System.out.println(s3);
    }
    //①
    public String reverse(String str, int startIndex, int endIndex) {
        //1.使用String的toCharArray()方法,截取字符串
        char[] charArray = str.toCharArray();
        //2.通过中间值，互换位置---》反转
        for (int i = startIndex, j = endIndex; i < j; i++, j--) {
            char temp = charArray[i];
            charArray[i] = charArray[j];
            charArray[j] = temp;
        }
        //3.拼接字符串
        return new String(charArray);
    }
    //②
    public String reverse2(String str, int startIndex, int endIndex) {
        //1.通过String的substring方法，截取字符串---》获取str的第一个部分
        String finalStr = str.substring(0, startIndex);//Hello
        //2.从后往前逐个拼接到str的第一个部分---》将剩余的部分进行拼接
        for (int i = endIndex; i >= startIndex ; i--) {
            finalStr += str.charAt(i);
        }//HellodlroW
        //3.拼接字符串
        finalStr += str.substring(endIndex + 1);
        return finalStr;
    }


    /**
     * 题目3:获取一个字符串在另一个字符串中出现的次数
     * 比如:获取"ab"在"abkkcadkabkebfkabkskab"中出现的次数
     */


    /**
     * 判断subStr在str中出现的次数
     * @param str
     * @param subStr
     * @return 返回次数
     */
    public int getSubStringCount(String str,String subStr){
        int count = 0;//记录出现的次数
        if (str.length() >= subStr.length()){//判断str的长度是否大于等于subStr的长度
            int index = str.indexOf(subStr);
            while (index >= 0){//index返回-1时，查找结束，结束循环
                count++;
                index = str.indexOf(subStr,index + subStr.length());
            }
        }
        return count;
    }
    @Test
    public void test2(){
        String subStr = "ab";
        String str = "abkkcadkabkebfkabkskababab";
        int count = getSubStringCount(str,subStr);
        System.out.println( count);
    }

}
